package main

import (
	"awesomeProject3/stream_grpc_test/proto"
	"context"
	"fmt"
	"google.golang.org/grpc"
	"sync"
	"time"
)

var wg = sync.WaitGroup{}

func main() {
	conn, err := grpc.Dial("127.0.0.1:50052", grpc.WithInsecure())
	if err != nil {
		panic(err)
	}
	defer conn.Close()
	c := proto.NewGreeterClient(conn)
	wg.Add(2)
	//服务流
	//go func() {
	//	wg.Done()
	//	//拿到通道
	//	res, _ := c.GetStream(context.Background(), &proto.StreamReqData{Data: "慕课网"})
	//	for {
	//		a, err := res.Recv()
	//		if err != nil {
	//			fmt.Println(err)
	//			break
	//		}
	//		fmt.Println(a.Data)
	//	}
	//}()
	////客户流
	//go func() {
	//	defer wg.Done()
	//	putS, _ := c.PutStream(context.Background())
	//	i := 0
	//	for {
	//		i++
	//		putS.Send(&proto.StreamReqData{
	//			Data: fmt.Sprintf("慕课网%d", i),
	//		})
	//		time.Sleep(time.Second)
	//		if i > 10 {
	//			break
	//		}
	//	}
	//}()
	//双向流
	allStr, _ := c.AllStream(context.Background())
	go func() {
		defer wg.Done()
		for {
			data, _ := allStr.Recv()
			fmt.Println("收到服务端消息:" + data.Data)
		}
	}()
	go func() {
		defer wg.Done()
		i := 1
		for {
			i++
			_ = allStr.Send(&proto.StreamReqData{Data: fmt.Sprintf("慕课网：%d", i)})
			time.Sleep(time.Second)
			if i > 10 {
				break
			}
		}
	}()
	wg.Wait()

	wg.Wait()

}
